home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / EMULATOR / GBDK_BIN / examples / s / space
Text File  |  1997-02-17  |  36KB  |  1,294 lines

  1.     ; Little demo illustrating how to use the graphical possibilities
  2.     ; of the GB (background, window and animated sprite).
  3.     ; I have used fixed-point values for both the position and
  4.     ; speed of objects to get smooth movements.
  5.     ;
  6.     ; OBJ data        : 0x8000 -> 0x8FFF (unsigned).
  7.     ; Window data        : 0x8800 -> 0x97FF (unsigned).
  8.     ; Background data    : 0x8800 -> 0x97FF (signed).
  9.     ;
  10.     ; Tiled 0xFC -> 0xFF are standard tiles (all black -> all white).
  11.     ;
  12.     ; Keys:
  13.     ; Directions        : Change the speed (and direction) of the sprite
  14.     ; Directions + A    : Change the speed (and direction) of the window
  15.     ; Directions + B    : Change the speed (and direction) of the background
  16.     ; START            : Open/close the door
  17.     ; SELECT        : Basic fading effect
  18.     ;
  19.     ; Note that the window is kept in the lower right part of the screen
  20.     ; since it can't be made transparent.
  21.  
  22.     .include    "gblib:global.h"
  23.  
  24.     .DELAY        =    0x1000            ; Delay value to slow the animation
  25.     .NBDFRAMES    =    .endfilm-.film        ; Nb frames for the door
  26.     .NBSFRAMES    =    0x07            ; Nb frames for the sprite
  27.     .WINSZX        =    0x80            ; Size of the picture in the window
  28.     .WINSZY        =    0x50
  29.     .MINWINX    =    .MAXWNDPOSX-.WINSZX+1    ; Bounds of the window origin
  30.     .MINWINY    =    .MAXWNDPOSY-.WINSZY+1
  31.     .MAXWINX    =    .MAXWNDPOSX
  32.     .MAXWINY    =    .MAXWNDPOSY
  33.     .FADESTEP    =    0x10            ; Nb steps for the fading effect
  34.     .STARTFADE    =    0x06*.FADESTEP        ; Initial value for the fading effect
  35.  
  36.     .module    Demo
  37.  
  38.     .area    _BSS
  39.  
  40. .time:                ; Global "time" value (counter)
  41.     .ds    0x01
  42.  
  43. .doorstate:            ; State of the door (OPENED, CLOSED...)
  44.     .ds    0x01
  45. .doorpos:            ; Current position in the door animation
  46.     .ds    0x01
  47.  
  48. .color:                ; Current color for fading effect
  49.     .ds    0x01
  50.  
  51. .sframe:            ; Current frame of the sprite
  52.     .ds    0x01
  53.  
  54. .bposx:
  55.     .ds    0x02        ; Background position (fixed point)
  56. .bposy:
  57.     .ds    0x02
  58. .bspx:
  59.     .ds    0x02        ; Background speed (fixed point)
  60. .bspy:
  61.     .ds    0x02
  62.  
  63. .wposx:
  64.     .ds    0x02        ; Window position (fixed point)
  65. .wposy:
  66.     .ds    0x02
  67. .wspx:
  68.     .ds    0x02        ; Window speed (fixed point)
  69. .wspy:
  70.     .ds    0x02
  71.  
  72. .sposx:
  73.     .ds    0x02        ; Sprite position (fixed point)
  74. .sposy:
  75.     .ds    0x02
  76. .sspx:
  77.     .ds    0x02        ; Sprite speed (fixed point)
  78. .sspy:
  79.     .ds    0x02
  80.  
  81.     .area    _CODE
  82.  
  83.     .CLOSED        =    0x00
  84.     .OPENING    =    0x01
  85.     .OPENED        =    0x02
  86.     .CLOSING    =    0x03
  87.  
  88. _main::
  89.     DI            ; Disable interrupts
  90.     CALL    .wait_vbl    ; Must be in VBL before turning the screen off.
  91.  
  92.     LD    A,#0b01100111    ; LCD        = Off (no picture on screen)
  93.     LDH    (.LCDCONT),A
  94.                 ; WindowBank    =    0x9C00
  95.                 ; Window    =    On
  96.                 ; BG Chr    =    0x8800
  97.                 ; BG Bank    =    0x9800
  98.                 ; OBJ        =    8x16
  99.                 ; OBJ        =    On
  100.                 ; BG        =    On
  101.  
  102.     LD    A,#0b11100100
  103.     LDH    (.BGRDPAL),A
  104.     LDH    (.SPR0PAL),A
  105.  
  106.     XOR    A        ; A = 0
  107.     LD    (.time),A
  108.     LD    (.color),A
  109.  
  110.     ; Initialize tiles
  111.     LD    B,#0x00
  112.     CALL     .init_tiles    ; Init the tile set at 0x8000 with 0x00
  113.     LD    B,#0xFF
  114.     CALL     .init_btt    ; Init the tiles tables with 0xFF
  115.     CALL     .init_wtt
  116.  
  117.     LD    BC,#.tp0
  118.     LD    HL,#0x9000-(.endtp0-.tp0)
  119.     LD    DE,#.endtp0-.tp0
  120.     CALL    .mv_tiles    ; Move tiles
  121.  
  122.     LD    BC,#.tp1
  123.     LD    HL,#0x8000
  124.     LD    DE,#.endtp1-.tp1
  125.     CALL    .mv_tiles    ; Move tiles
  126.  
  127.     LD    BC,#.tp2
  128.     LD    HL,#0x8800
  129.     LD    DE,#.endtp2-.tp2
  130.     CALL    .mv_tiles    ; Move tiles
  131.  
  132.     LD    BC,#.tp3
  133.     LD    HL,#0x9000
  134.     LD    DE,#.endtp3-.tp3
  135.     CALL    .mv_tiles    ; Move tiles
  136.  
  137.     LD    BC,#.bkg_tiles
  138.     CALL    .set_btt
  139.  
  140.     ; Draw the frame in the window
  141.     LD    BC,#.frame_tiles
  142.     LD    DE,#0x0000/8    ; Place image at (0x00,0x00)
  143.     LD    HL,#0x8050/8    ; Image size is 0x80 x 0x50
  144.     CALL    .set_xy_wtt
  145.  
  146.     ; Draw the door in the window
  147.     LD    BC,#.door1_tiles
  148.     LD    DE,#0x1010/8    ; Place image at (0x10,0x10)
  149.     LD    HL,#0x6030/8    ; Image size is 0x60 x 0x30
  150.     CALL    .set_xy_wtt
  151.     LD    A,#.CLOSED
  152.     LD    (.doorstate),A
  153.  
  154.     ; Initialize background
  155.     XOR    A        ; A = 0
  156.     LD    (.bposx),A
  157.     LDH    (.SCROLLX),A
  158.     LD    (.bposx+1),A
  159.     LD    (.bposy),A
  160.     LDH    (.SCROLLY),A
  161.     LD    (.bposy+1),A
  162.     LD    A,#-0x01
  163.     LD    (.bspx),A
  164.     XOR    A        ; A = 0
  165.     LD    (.bspx+1),A
  166.     XOR    A        ; A = 0
  167.     LD    (.bspy),A
  168.     LD    A,#0x80
  169.     LD    (.bspy+1),A
  170.  
  171.     ; Initialize window
  172.     LD    A,#.MAXWNDPOSX
  173.     LD    (.wposx),A
  174.     LDH    (.WNDPOSX),A
  175.     XOR    A        ; A = 0
  176.     LD    (.wposx+1),A
  177.     LD    A,#.MAXWNDPOSY
  178.     LD    (.wposy),A
  179.     LDH    (.WNDPOSY),A
  180.     XOR    A        ; A = 0
  181.     LD    (.wposy+1),A
  182.     LD    A,#-0x01
  183.     LD    (.wspx),A
  184.     LD    A,#0x80
  185.     LD    (.wspx+1),A
  186.     LD    A,#-0x01
  187.     LD    (.wspy),A
  188.     LD    A,#0xC0
  189.     LD    (.wspy+1),A
  190.  
  191.     ; Initialize sprite
  192.     XOR    A        ; A = 0
  193.     LD    (.sframe),A
  194.     LD    C,#0x00        ; Sprite 0x00
  195.     LD    D,#0x00
  196.     CALL    .prop_sprite    ; Default sprite properties
  197.     LD    C,#0x01        ; Sprite 0x01
  198.     LD    D,#0x00
  199.     CALL    .prop_sprite    ; Default sprite properties
  200.  
  201.     LD    A,#0x10
  202.     LD    (.sposx),A
  203.     XOR    A        ; A = 0
  204.     LD    (.sposx+1),A
  205.     LD    A,#0x10
  206.     LD    (.sposy),A
  207.     XOR    A        ; A = 0
  208.     LD    (.sposy+1),A
  209.     XOR    A        ; A = 0
  210.     LD    (.sspx),A
  211.     LD    A,#0x40
  212.     LD    (.sspx+1),A
  213.     XOR    A        ; A = 0
  214.     LD    (.sspy),A
  215.     LD    A,#0x40
  216.     LD    (.sspy+1),A
  217.     CALL    .tile_sprite    ; Set sprite tiles
  218.     CALL    .place_sprite    ; Place sprites
  219.  
  220.     LD    A,#0b11100111    ; LCD Controller = On
  221.     LDH    (.LCDCONT),A
  222.     EI            ; Enable interrupts
  223. 1$:
  224.     LD    A,(.time)
  225.     INC    A
  226.     LD    (.time),A
  227.  
  228.     LD    BC,#.DELAY
  229.     CALL    .delay_ns
  230.  
  231.     CALL    .fade
  232.     CALL    .door
  233.     CALL    .scroll
  234.     CALL    .animate_sprite
  235.  
  236.     CALL    .jpad
  237.     LD    D,A
  238.  
  239.     AND    #.B        ; Is B pressed ?
  240.     JP    NZ,10$
  241.  
  242.     LD    A,D
  243.     AND    #.A        ; Is A pressed ?
  244.     JP    NZ,20$
  245.  
  246.     LD    A,D
  247.     AND    #.SELECT    ; Is SELECT pressed ?
  248.     JR    Z,2$
  249.     LD    A,#.STARTFADE
  250.     LD    (.color),A
  251. 2$:
  252.     LD    A,D
  253.     AND    #.START        ; Is START pressed ?
  254.     JR    Z,4$
  255.     LD    A,(.doorstate)
  256.     CP    #.CLOSED
  257.     JR    NZ,3$
  258.     LD    A,#.OPENING
  259.     LD    (.doorstate),A
  260.     XOR    A        ; A = 0
  261.     LD    (.doorpos),A
  262.     JR    4$
  263. 3$:
  264.     CP    #.OPENED
  265.     JR    NZ,4$
  266.     LD    A,#.CLOSING
  267.     LD    (.doorstate),A
  268.     LD    A,#.NBDFRAMES
  269.     LD    (.doorpos),A
  270. 4$:
  271.     LD    A,D
  272.     AND    #.UP        ; Is UP pressed ?
  273.     JR    Z,5$
  274.     LD    B,#0x00        ; Load 0x0010 into BC
  275.     LD    C,#0x10
  276.     LD    A,(.sspy)    ; Load speed into HL
  277.     LD    H,A
  278.     LD    A,(.sspy+1)
  279.     LD    L,A
  280.     LD    A,L        ; Substract BC from HL
  281.     SUB    C
  282.     LD    (.sspy+1),A
  283.     LD    A,H
  284.     SBC    B
  285.     LD    (.sspy),A    ; Store new speed
  286.     JR    6$
  287. 5$:
  288.     LD    A,D
  289.     AND    #.DOWN        ; Is DOWN pressed ?
  290.     JR    Z,6$
  291.     LD    B,#0x00        ; Load 0x0010 into BC
  292.     LD    C,#0x10
  293.     LD    A,(.sspy)    ; Load speed into HL
  294.     LD    H,A
  295.     LD    A,(.sspy+1)
  296.     LD    L,A
  297.      ADD    HL,BC        ; Add them
  298.     LD    A,H        ; Store new speed
  299.     LD    (.sspy),A
  300.     LD    A,L
  301.     LD    (.sspy+1),A
  302. 6$:
  303.     LD    A,D
  304.     AND    #.LEFT        ; Is LEFT pressed ?
  305.     JR    Z,7$
  306.     LD    B,#0x00        ; Load 0x0010 into BC
  307.     LD    C,#0x10
  308.     LD    A,(.sspx)    ; Load speed into HL
  309.     LD    H,A
  310.     LD    A,(.sspx+1)
  311.     LD    L,A
  312.     LD    A,L        ; Substract BC from HL
  313.     SUB    C
  314.     LD    (.sspx+1),A
  315.     LD    A,H
  316.     SBC    B
  317.     LD    (.sspx),A    ; Store new speed
  318.     JP    1$
  319. 7$:
  320.     LD    A,D
  321.     AND    #.RIGHT        ; Is RIGHT pressed ?
  322.     JP    Z,1$
  323.     LD    B,#0x00        ; Load 0x0010 into BC
  324.     LD    C,#0x10
  325.     LD    A,(.sspx)    ; Load speed into HL
  326.     LD    H,A
  327.     LD    A,(.sspx+1)
  328.     LD    L,A
  329.      ADD    HL,BC        ; Add them
  330.     LD    A,H        ; Store new speed
  331.     LD    (.sspx),A
  332.     LD    A,L
  333.     LD    (.sspx+1),A
  334.     JP    1$
  335.  
  336. 10$:
  337.     LD    A,D
  338.     AND    #.UP        ; Is UP pressed ?
  339.     JP    Z,11$
  340.     LD    B,#0x00        ; Load 0x0010 into BC
  341.     LD    C,#0x10
  342.     LD    A,(.bspy)    ; Load speed into HL
  343.     LD    H,A
  344.     LD    A,(.bspy+1)
  345.     LD    L,A
  346.     LD    A,L        ; Substract BC from HL
  347.     SUB    C
  348.     LD    (.bspy+1),A
  349.     LD    A,H
  350.     SBC    B
  351.     LD    (.bspy),A    ; Store new speed
  352.     JR    12$
  353. 11$:
  354.     LD    A,D
  355.     AND    #.DOWN        ; Is DOWN pressed ?
  356.     JP    Z,12$
  357.     LD    B,#0x00        ; Load 0x0010 into BC
  358.     LD    C,#0x10
  359.     LD    A,(.bspy)    ; Load speed into HL
  360.     LD    H,A
  361.     LD    A,(.bspy+1)
  362.     LD    L,A
  363.      ADD    HL,BC        ; Add them
  364.     LD    A,H        ; Store new speed
  365.     LD    (.bspy),A
  366.     LD    A,L
  367.     LD    (.bspy+1),A
  368. 12$:
  369.     LD    A,D
  370.     AND    #.LEFT        ; Is LEFT pressed ?
  371.     JP    Z,13$
  372.     LD    B,#0x00        ; Load 0x0010 into BC
  373.     LD    C,#0x10
  374.     LD    A,(.bspx)    ; Load speed into HL
  375.     LD    H,A
  376.     LD    A,(.bspx+1)
  377.     LD    L,A
  378.     LD    A,L        ; Substract BC from HL
  379.     SUB    C
  380.     LD    (.bspx+1),A
  381.     LD    A,H
  382.     SBC    B
  383.     LD    (.bspx),A    ; Store new speed
  384.     JP    1$
  385. 13$:
  386.     LD    A,D
  387.     AND    #.RIGHT        ; Is RIGHT pressed ?
  388.     JP    Z,1$
  389.     LD    B,#0x00        ; Load 0x0010 into BC
  390.     LD    C,#0x10
  391.     LD    A,(.bspx)    ; Load speed into HL
  392.     LD    H,A
  393.     LD    A,(.bspx+1)
  394.     LD    L,A
  395.      ADD    HL,BC        ; Add them
  396.     LD    A,H        ; Store new speed
  397.     LD    (.bspx),A
  398.     LD    A,L
  399.     LD    (.bspx+1),A
  400.     JP    1$
  401.  
  402. 20$:
  403.     LD    A,D
  404.     AND    #.UP        ; Is UP pressed ?
  405.     JP    Z,21$
  406.     LD    B,#0x00        ; Load 0x0010 into BC
  407.     LD    C,#0x10
  408.     LD    A,(.wspy)    ; Load speed into HL
  409.     LD    H,A
  410.     LD    A,(.wspy+1)
  411.     LD    L,A
  412.     LD    A,L        ; Substract BC from HL
  413.     SUB    C
  414.     LD    (.wspy+1),A
  415.     LD    A,H
  416.     SBC    B
  417.     LD    (.wspy),A    ; Store new speed
  418.     JR    22$
  419. 21$:
  420.     LD    A,D
  421.     AND    #.DOWN        ; Is DOWN pressed ?
  422.     JP    Z,22$
  423.     LD    B,#0x00        ; Load 0x0010 into BC
  424.     LD    C,#0x10
  425.     LD    A,(.wspy)    ; Load speed into HL
  426.     LD    H,A
  427.     LD    A,(.wspy+1)
  428.     LD    L,A
  429.      ADD    HL,BC        ; Add them
  430.     LD    A,H        ; Store new speed
  431.     LD    (.wspy),A
  432.     LD    A,L
  433.     LD    (.wspy+1),A
  434. 22$:
  435.     LD    A,D
  436.     AND    #.LEFT        ; Is LEFT pressed ?
  437.     JP    Z,23$
  438.     LD    B,#0x00        ; Load 0x0010 into BC
  439.     LD    C,#0x10
  440.     LD    A,(.wspx)    ; Load speed into HL
  441.     LD    H,A
  442.     LD    A,(.wspx+1)
  443.     LD    L,A
  444.     LD    A,L        ; Substract BC from HL
  445.     SUB    C
  446.     LD    (.wspx+1),A
  447.     LD    A,H
  448.     SBC    B
  449.     LD    (.wspx),A    ; Store new speed
  450.     JP    1$
  451. 23$:
  452.     LD    A,D
  453.     AND    #.RIGHT        ; Is RIGHT pressed ?
  454.     JP    Z,1$
  455.     LD    B,#0x00        ; Load 0x0010 into BC
  456.     LD    C,#0x10
  457.     LD    A,(.wspx)    ; Load speed into HL
  458.     LD    H,A
  459.     LD    A,(.wspx+1)
  460.     LD    L,A
  461.      ADD    HL,BC        ; Add them
  462.     LD    A,H        ; Store new speed
  463.     LD    (.wspx),A
  464.     LD    A,L
  465.     LD    (.wspx+1),A
  466.     JP    1$
  467.  
  468.     RET
  469.  
  470.     ; Fade the screen (off and on)
  471. .fade:
  472.  
  473.     LD    A,(.color)    ; Load color into A
  474.     CP    #0x00
  475.     RET    Z
  476.     CP    #.STARTFADE
  477.     JR    NZ,1$
  478.     LD    A,#0b11111001
  479.     JR    6$
  480. 1$:
  481.     CP    #.STARTFADE-.FADESTEP
  482.     JR    NZ,2$
  483.     LD    A,#0b11111110
  484.     JR    6$
  485. 2$:
  486.     CP    #.STARTFADE-0x02*.FADESTEP
  487.     JR    NZ,3$
  488.     LD    A,#0b11111111
  489.     JR    6$
  490. 3$:
  491.     CP    #.STARTFADE-0x03*.FADESTEP
  492.     JR    NZ,4$
  493.     LD    A,#0b11111110
  494.     JR    6$
  495. 4$:
  496.     CP    #.STARTFADE-0x04*.FADESTEP
  497.     JR    NZ,5$
  498.     LD    A,#0b11111001
  499.     JR    6$
  500. 5$:
  501.     CP    #.STARTFADE-0x05*.FADESTEP
  502.     JR    NZ,7$
  503.     LD    A,#0b11100100
  504. 6$:
  505.     LDH    (.BGRDPAL),A
  506. 7$:
  507.     LD    A,(.color)
  508.     SUB    A,#0x01
  509.     LD    (.color),A
  510.     RET
  511.  
  512.     ; Scroll the background, the window and the sprite
  513. .scroll:
  514.  
  515.     ; Update background
  516.     LD    A,(.bposx)    ; Load background position into HL
  517.     LD    H,A
  518.     LD    A,(.bposx+1)
  519.     LD    L,A
  520.     LD    A,(.bspx)    ; Load background speed into BC
  521.     LD    B,A
  522.     LD    A,(.bspx+1)
  523.     LD    C,A
  524.      ADD    HL,BC        ; Add them
  525.     LD    A,L        ; Store new background position
  526.     LD    (.bposx+1),A
  527.     LD    A,H
  528.     LD    (.bposx),A
  529.     LDH    (.SCROLLX),A    ; Update position
  530.  
  531.     LD    A,(.bposy)    ; Load background position into HL
  532.     LD    H,A
  533.     LD    A,(.bposy+1)
  534.     LD    L,A
  535.     LD    A,(.bspy)    ; Load background speed into BC
  536.     LD    B,A
  537.     LD    A,(.bspy+1)
  538.     LD    C,A
  539.      ADD    HL,BC        ; Add them
  540.     LD    A,L        ; Store new background position
  541.     LD    (.bposy+1),A
  542.     LD    A,H
  543.     LD    (.bposy),A
  544.     LDH    (.SCROLLY),A    ; Update position
  545.  
  546.     ; Update window
  547.     LD    A,(.wspx)    ; Load window speed into BC
  548.     LD    B,A
  549.     LD    A,(.wspx+1)
  550.     LD    C,A
  551.     LD    A,(.wposx)    ; Load window position into HL
  552.     LD    H,A
  553.     LD    A,(.wposx+1)
  554.     LD    L,A
  555.      ADD    HL,BC        ; Add them
  556.     LD    A,L        ; Store new window position
  557.     LD    (.wposx+1),A
  558.     LD    A,H
  559.     LD    (.wposx),A
  560.  
  561.     ; X position
  562.     LD    A,(.wposx)    ; Check window position
  563.     LD    H,#0x00        ; We must use 16 bit registers since the
  564.     LD    L,A        ; window is not less than 0x80 pixels
  565.     LD    BC,#.MAXWINX+1
  566.     LD    A,L        ; Substract BC from HL
  567.     SUB    C
  568.     LD    A,H
  569.     SBC    B
  570.     CP    #0x80
  571.     JR    NC,1$        ; Maximum value ?
  572.      LD    A,#.MAXWINX
  573.      LD    (.wposx),A    ; Correct window position
  574.     LD    A,(.wspx+1)    ; Load window speed into BC
  575.     LD    C,A
  576.     LD    A,(.wspx)
  577.     LD    B,A
  578.     AND    #0x80        ; Speed is already negative ?
  579.     JR    NZ,3$
  580.     JR    2$
  581. 1$:
  582.     LD    A,(.wposx)    ; Check window position
  583.     LD    H,#0x00        ; We must use 16 bit registers since the
  584.     LD    L,A        ; window is not less than 0x80 pixels
  585.     LD    BC,#.MINWINX
  586.     LD    A,L        ; Substract BC from HL
  587.     SUB    C
  588.     LD    A,H
  589.     SBC    B
  590.     CP    #0x80
  591.     JR    C,3$        ; Minimum value ?
  592.      LD    A,#.MINWINX+1
  593.     LD    (.wposx),A    ; Correct window position
  594.     LD    A,(.wspx+1)    ; Load window speed into BC
  595.     LD    C,A
  596.     LD    A,(.wspx)
  597.     LD    B,A
  598.     AND    #0x80        ; Speed is already positive ?
  599.     JR    Z,3$
  600. 2$:
  601.     LD    HL,#0x00    ; Invert speed
  602.     LD    A,L        ; Substract BC from HL
  603.     SUB    C
  604.     LD    (.wspx+1),A
  605.     LD    A,H
  606.     SBC    B
  607.     LD    (.wspx),A    ; Store new speed
  608. 3$:
  609.     LD    A,(.wposx)
  610.     LDH    (.WNDPOSX),A    ; Update position
  611.  
  612.     LD    A,(.wspy)    ; Load window speed into BC
  613.     LD    B,A
  614.     LD    A,(.wspy+1)
  615.     LD    C,A
  616.     LD    A,(.wposy)    ; Load window position into HL
  617.     LD    H,A
  618.     LD    A,(.wposy+1)
  619.     LD    L,A
  620.      ADD    HL,BC        ; Add them
  621.     LD    A,L        ; Store new window position
  622.     LD    (.wposy+1),A
  623.     LD    A,H
  624.     LD    (.wposy),A
  625.  
  626.     ; Y position
  627.     LD    A,(.wposy)    ; Check window position
  628.     LD    H,#0x00        ; We must use 16 bit registers since the
  629.     LD    L,A        ; window is not less than 0x80 pixels
  630.     LD    BC,#.MAXWINY+1
  631.     LD    A,L        ; Substract BC from HL
  632.     SUB    C
  633.     LD    A,H
  634.     SBC    B
  635.     CP    #0x80
  636.     JR    NC,4$        ; Maximum value ?
  637.      LD    A,#.MAXWINY
  638.      LD    (.wposy),A    ; Correct window position
  639.     LD    A,(.wspy+1)    ; Load window speed into BC
  640.     LD    C,A
  641.     LD    A,(.wspy)
  642.     LD    B,A
  643.     AND    #0x80        ; Speed is already negative ?
  644.     JR    NZ,6$
  645.     JR    5$
  646. 4$:
  647.     LD    A,(.wposy)    ; Check window position
  648.     LD    H,#0x00        ; We must use 16 bit registers since the
  649.     LD    L,A        ; window is not less than 0x80 pixels
  650.     LD    BC,#.MINWINY
  651.     LD    A,L        ; Substract BC from HL
  652.     SUB    C
  653.     LD    A,H
  654.     SBC    B
  655.     CP    #0x80
  656.     JR    C,6$        ; Minimum value ?
  657.     LD    A,#.MINWINY+1
  658.     LD    (.wposy),A    ; Correct window position
  659.     LD    A,(.wspy+1)    ; Load window speed into BC
  660.     LD    C,A
  661.     LD    A,(.wspy)
  662.     LD    B,A
  663.     AND    #0x80        ; Speed is already positive ?
  664.     JR    Z,6$
  665. 5$:
  666.     LD    HL,#0x00    ; Invert speed
  667.     LD    A,L        ; Substract BC from HL
  668.     SUB    C
  669.     LD    (.wspy+1),A
  670.     LD    A,H
  671.     SBC    B
  672.     LD    (.wspy),A    ; Store new speed
  673. 6$:
  674.     LD    A,(.wposy)
  675.     LDH    (.WNDPOSY),A    ; Update position
  676.  
  677.     ; Update sprite
  678.     LD    A,(.sposx)    ; Load sprite position into HL
  679.     LD    H,A
  680.     LD    A,(.sposx+1)
  681.     LD    L,A
  682.     LD    A,(.sspx)    ; Load sprite speed into BC
  683.     LD    B,A
  684.     LD    A,(.sspx+1)
  685.     LD    C,A
  686.      ADD    HL,BC        ; Add them
  687.     LD    A,L        ; Store new sprite position
  688.     LD    (.sposx+1),A
  689.     LD    A,H
  690.     LD    (.sposx),A
  691.  
  692.     LD    A,(.sposy)    ; Load sprite position into HL
  693.     LD    H,A
  694.     LD    A,(.sposy+1)
  695.     LD    L,A
  696.     LD    A,(.sspy)    ; Load sprite speed into BC
  697.     LD    B,A
  698.     LD    A,(.sspy+1)
  699.     LD    C,A
  700.      ADD    HL,BC        ; Add them
  701.     LD    A,L        ; Store new sprite position
  702.     LD    (.sposy+1),A
  703.     LD    A,H
  704.     LD    (.sposy),A
  705.     CALL    .place_sprite    ; Update position
  706.  
  707.     RET
  708.  
  709.     ; Open and close the door
  710. .door:
  711.     LD    A,(.doorstate)
  712.     CP    #.OPENING
  713.     JP    Z,.open_door
  714.     CP    #.CLOSING
  715.     JP    Z,.close_door
  716.     RET
  717.  
  718. .open_door:
  719.     LD    A,(.doorpos)
  720.     LD    HL,#.film+0x02
  721.     LD    B,#0x00
  722.     LD    C,A
  723.     ADD    HL,BC
  724.     LD    C,(HL)
  725.     INC    HL
  726.     LD    B,(HL)
  727.     LD    DE,#0x1010/8    ; Place image at (0x10,0x10)
  728.     LD    HL,#0x6030/8    ; Image size is 0x60 x 0x30
  729.     CALL    .set_xy_wtt
  730.  
  731.     LD    A,(.doorpos)
  732.     ADD    A,#0x02
  733.     LD    (.doorpos),A
  734.     CP    #.NBDFRAMES
  735.     RET    NZ
  736.     LD    A,#.OPENED
  737.     LD    (.doorstate),A
  738.     RET
  739.  
  740. .close_door:
  741.     LD    A,(.doorpos)
  742.     LD    HL,#.film-0x02
  743.     LD    B,#0x00
  744.     LD    C,A
  745.     ADD    HL,BC
  746.     LD    C,(HL)
  747.     INC    HL
  748.     LD    B,(HL)
  749.     LD    DE,#0x1010/8    ; Place image at (0x10,0x10)
  750.     LD    HL,#0x6030/8    ; Image size is 0x60 x 0x30
  751.     CALL    .set_xy_wtt
  752.  
  753.     LD    A,(.doorpos)
  754.     SUB    A,#0x02
  755.     LD    (.doorpos),A
  756.     RET    NZ
  757.     LD    A,#.CLOSED
  758.     LD    (.doorstate),A
  759.     RET
  760.  
  761.     ; Animate sprite
  762. .animate_sprite:
  763.     LD    A,(.time)
  764.     AND    #0x07
  765.     RET    NZ
  766.  
  767.     LD    A,(.sframe)
  768.     INC    A
  769.     CP    #.NBSFRAMES
  770.     JR    NZ,1$
  771.     XOR    A        ; A = 0
  772. 1$:
  773.     LD    (.sframe),A
  774.  
  775.     CALL    .tile_sprite
  776.     RET
  777.  
  778.     ; Set sprite tiles
  779. .tile_sprite:
  780.      LD    A,(.sframe)
  781.     LD    HL,#.earth_tiles
  782.     RLCA
  783.     LD    B,#0x00
  784.     LD    C,A
  785.     ADD    HL,BC
  786.     LD    C,#0x00        ; Sprite 0x00
  787.     LD    A,(HL+)
  788.     LD    D,A
  789.     PUSH    HL
  790.     CALL    .set_sprite
  791.     POP    HL
  792.  
  793.     LD    C,#0x01        ; Sprite 0x01
  794.     LD    A,(HL+)
  795.     LD    D,A
  796.     CALL    .set_sprite
  797.  
  798.     RET
  799.  
  800.     ; Place sprite
  801. .place_sprite:
  802.     LD    C,#0x00        ; Sprite 0x00
  803.     LD    A,(.sposx)
  804.     LD    D,A
  805.     LD    A,(.sposy)
  806.     LD    E,A
  807.     PUSH    DE        ; Store position
  808.     CALL    .mv_sprite
  809.  
  810.     LD    C,#0x01        ; Sprite 0x01
  811.     POP    DE        ; Restore position
  812.     LD    A,#0x08
  813.     ADD    A,D
  814.     LD    D,A
  815.     CALL    .mv_sprite
  816.  
  817.     RET
  818.  
  819.     .area    _DATA
  820.  
  821. .tp0:
  822.  
  823. .std_data:
  824.  
  825.     ; Basic tiles (0xFC to 0xFF)
  826.  
  827.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  828.     .byte    0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
  829.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF
  830.     .byte    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  831.  
  832. .endtp0:
  833.  
  834. .tp1:
  835.  
  836. .earth_data:
  837.  
  838.     ; Tile 0x00
  839.     .byte    0x07,0x07,0x18,0x1F,0x32,0x2D,0x71,0x4E,0x70,0x4F,0xF8,0x87,0xF8,0x87,0xF8,0x87
  840.     .byte    0xFC,0x83,0xFE,0x81,0x7F,0x40,0x7F,0x40,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  841.     .byte    0xC0,0xC0,0xF0,0x30,0x78,0x88,0x3C,0xC4,0x5C,0xA4,0x9E,0x62,0x3E,0xC2,0x3E,0xC2
  842.     .byte    0x5E,0xA2,0x7E,0x82,0x0C,0xF4,0x0C,0xF4,0x98,0x68,0xB0,0x70,0xC0,0xC0,0x00,0x00
  843.     .byte    0x07,0x07,0x1F,0x18,0x2F,0x30,0x4F,0x70,0x6F,0x50,0x9F,0xE0,0x9F,0xE0,0xBF,0xC0
  844.     .byte    0xFF,0x80,0xB7,0xC8,0x63,0x5C,0x43,0x7C,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  845.     .byte    0xC0,0xC0,0xB0,0x70,0x18,0xE8,0x0C,0xF4,0x0C,0xF4,0x82,0x7E,0x82,0x7E,0x86,0x7A
  846.     .byte    0xC6,0x3A,0xE6,0x1A,0xF4,0x0C,0xFC,0x04,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  847.  
  848.     ; Tile 0x08
  849.     .byte    0x07,0x07,0x1E,0x19,0x20,0x3F,0x40,0x7F,0x42,0x7D,0x81,0xFE,0x81,0xFE,0x83,0xFC
  850.     .byte    0xD7,0xA8,0xBB,0xC4,0x6E,0x51,0x7C,0x43,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  851.     .byte    0xC0,0xC0,0x70,0xB0,0xE8,0x18,0xF4,0x0C,0xF4,0x0C,0xFE,0x02,0xFE,0x02,0xFE,0x02
  852.     .byte    0xFE,0x02,0x7E,0x82,0x3C,0xC4,0x3C,0xC4,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  853.     .byte    0x07,0x07,0x1B,0x1C,0x20,0x3F,0x40,0x7F,0x40,0x7F,0xE0,0x9F,0x90,0xEF,0x89,0xF6
  854.     .byte    0x8D,0xF2,0x9F,0xE0,0x5E,0x61,0x6F,0x50,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  855.     .byte    0xC0,0xC0,0xB0,0x70,0x28,0xD8,0x04,0xFC,0x2C,0xD4,0x1E,0xE2,0x1E,0xE2,0x3E,0xC2
  856.     .byte    0x7E,0x82,0xB6,0x4A,0xE4,0x1C,0xC4,0x3C,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  857.  
  858.     ; Tile 0x10
  859.     .byte    0x07,0x07,0x18,0x1F,0x20,0x3F,0x40,0x7F,0x40,0x7F,0xEE,0x91,0xF1,0x8E,0xE0,0x9F
  860.     .byte    0xE0,0x9F,0xF1,0x8E,0x71,0x4E,0x72,0x4D,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  861.     .byte    0xC0,0xC0,0xF0,0x30,0x08,0xF8,0x04,0xFC,0x04,0xFC,0x02,0xFE,0x02,0xFE,0x92,0x6E
  862.     .byte    0xD6,0x2A,0xFE,0x02,0xEC,0x14,0xFC,0x04,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  863.     .byte    0x07,0x07,0x1D,0x1A,0x36,0x29,0x5C,0x63,0x6C,0x53,0xCE,0xB1,0x9F,0xE0,0x9E,0xE1
  864.     .byte    0xAE,0xD1,0xBF,0xC0,0x47,0x78,0x47,0x78,0x2F,0x30,0x1F,0x18,0x07,0x07,0x00,0x00
  865.     .byte    0xC0,0xC0,0x70,0xB0,0x08,0xF8,0x04,0xFC,0x04,0xFC,0xE2,0x1E,0x32,0xCE,0x0E,0xF2
  866.     .byte    0x0E,0xF2,0x1E,0xE2,0x1C,0xE4,0x2C,0xD4,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  867.  
  868.     ; Tile 0x18
  869.     .byte    0x07,0x07,0x1E,0x19,0x33,0x2C,0x49,0x76,0x42,0x7D,0xC4,0xBB,0xC1,0xBE,0xC1,0xBE
  870.     .byte    0xE2,0x9D,0xF3,0x8C,0x78,0x47,0x78,0x47,0x3C,0x23,0x1C,0x1B,0x07,0x07,0x00,0x00
  871.     .byte    0xC0,0xC0,0x70,0xB0,0x68,0x98,0xC4,0x3C,0xC4,0x3C,0xEE,0x12,0xF2,0x0E,0xE2,0x1E
  872.     .byte    0xE2,0x1E,0xF2,0x0E,0x7C,0x84,0x7C,0x84,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  873.  
  874. .endtp1:
  875.  
  876. .tp2:
  877.  
  878. .frame_data:
  879.  
  880.     ; Tile 0x00
  881.     .byte    0xFF,0x00,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F
  882.     .byte    0xFF,0x00,0x01,0xFE,0x03,0xFC,0x07,0xF8,0x0F,0xF0,0x1F,0xE0,0x3F,0xC0,0x7F,0x80
  883.     .byte    0xFF,0x00,0xFE,0x01,0xFC,0x03,0xF8,0x07,0xF0,0x0F,0xE0,0x1F,0xC0,0x3F,0x80,0x7F
  884.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF
  885.     .byte    0xFF,0x00,0xFF,0x01,0xFD,0x03,0xF9,0x07,0xF1,0x0F,0xE1,0x1F,0xC1,0x3F,0x81,0x7F
  886.     .byte    0x80,0x7F,0x81,0x7E,0x83,0x7C,0x87,0x78,0x8F,0x70,0x9F,0x60,0xBF,0x40,0xFF,0x00
  887.     .byte    0xFF,0x70,0xFF,0x98,0xEF,0xB8,0xCF,0xF8,0xFF,0x70,0xFF,0x00,0xFF,0x00,0xFF,0x01
  888.     .byte    0xFF,0x00,0xFE,0x01,0xFC,0x03,0xF8,0x07,0xF0,0x0F,0xE0,0x1F,0xC0,0x3F,0xFF,0xFF
  889.  
  890.     ; Tile 0x08
  891.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
  892.     .byte    0x00,0xFF,0x01,0xFE,0x03,0xFC,0x07,0xF8,0x0F,0xF0,0x1F,0xE0,0x3F,0xC0,0xFF,0xFF
  893.     .byte    0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF
  894.     .byte    0xFF,0x0E,0xFF,0x13,0xFD,0x17,0xF9,0x1F,0xFE,0x0F,0xE0,0x1F,0xC0,0x3F,0x80,0xFF
  895.     .byte    0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF
  896.     .byte    0xFF,0x01,0xFF,0x01,0xFD,0x03,0xF9,0x07,0xF1,0x0F,0xE1,0x1F,0xC1,0x3F,0x81,0x7F
  897.     .byte    0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F
  898.     .byte    0x01,0xFF,0x01,0xFF,0x03,0xFD,0x07,0xF9,0x0F,0xF1,0x1F,0xE1,0x3F,0xC1,0x7F,0x81
  899.  
  900.     ; Tile 0x10
  901.     .byte    0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01
  902.     .byte    0x01,0xFF,0x01,0xFE,0x03,0xFC,0x77,0xF8,0xFF,0x98,0xEF,0xB8,0xCF,0xF8,0x7F,0xF0
  903.     .byte    0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x0E,0xFF,0x13,0xFD,0x17,0xF9,0x1F,0xFF,0x0E
  904.     .byte    0x80,0x7F,0x81,0x7E,0x83,0x7C,0x87,0x78,0x8F,0x70,0x9F,0x60,0xBF,0x40,0xFF,0x7F
  905.     .byte    0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0xFF,0xFF
  906.  
  907. .door1_data:
  908.  
  909.     ; Tile 0x15
  910.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
  911.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
  912.     .byte    0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
  913.  
  914. .door2_data:
  915.  
  916.     ; Tile 0x18
  917.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
  918.     .byte    0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
  919.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
  920.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  921.  
  922. .door3_data:
  923.  
  924.     ; Tile 0x1C
  925.     .byte    0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
  926.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
  927.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
  928.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  929.  
  930. .door4_data:
  931.  
  932.     ; Tile 0x20
  933.     .byte    0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  934.  
  935. .endtp2:
  936.  
  937. .tp3:
  938.  
  939. .bkg_data:
  940.  
  941.     ; Tile 0x00
  942.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF
  943.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF
  944.     .byte    0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  945.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xF7,0xFF,0xFF
  946.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  947.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F
  948.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  949.     .byte    0xFF,0xFF,0xDF,0xFF,0xEF,0xFF,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0xFF,0xFE,0xFE,0xFF
  950.  
  951.     ; Tile 0x08
  952.     .byte    0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0xFE,0x7C,0x39
  953.     .byte    0xFF,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF
  954.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF
  955.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0xFD
  956.     .byte    0xBB,0x01,0xC7,0x83,0xC7,0x83,0xC7,0x83,0xBB,0x01,0x7C,0x39,0x7D,0xFE,0xFF,0xFF
  957.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F
  958.     .byte    0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF
  959.     .byte    0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFB,0xAF,0x77,0x27,0x8F,0xDF,0x8F,0x27,0x8F
  960.  
  961.     ; Tile 0x10
  962.     .byte    0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  963.     .byte    0xFF,0xFB,0xFF,0xF7,0xEF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  964.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  965.     .byte    0xFF,0xBF,0xFF,0xDF,0xEF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  966.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  967.     .byte    0xFF,0xFF,0xFF,0xFE,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  968.     .byte    0xAF,0x77,0xFF,0xFB,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  969.     .byte    0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF
  970.  
  971.     ; Tile 0x18
  972.     .byte    0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF
  973.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF
  974.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF
  975.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x7D,0xFE,0x7C,0x39
  976.     .byte    0xFF,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF
  977.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF
  978.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  979.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFD
  980.  
  981.     ; Tile 0x20
  982.     .byte    0xFF,0xFF,0xDF,0xFF,0xEF,0xFF,0xFF,0xF7,0xFF,0xFB,0xFE,0xFD,0xFD,0xFE,0xFE,0xFF
  983.     .byte    0xAB,0x11,0xC7,0x83,0x83,0xC7,0xC7,0x83,0xAB,0x11,0x7C,0x39,0x7D,0xFE,0xFE,0xFF
  984.     .byte    0xFF,0xFF,0xFF,0xFF,0xFB,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0x7F
  985.     .byte    0xFB,0xFF,0xFF,0xFD,0xFE,0xFE,0xFE,0xFF,0xFE,0xFE,0xFF,0xFD,0xFB,0xFF,0xFF,0xFF
  986.     .byte    0xEF,0xFF,0xFF,0xDF,0x3F,0xBF,0x3F,0x7F,0x3F,0xBF,0xFF,0xDF,0xEF,0xFF,0xFF,0xFF
  987.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFB,0xFF,0xFF,0xFF,0xFF
  988.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFD,0xFE,0xFE,0xFD
  989.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF
  990.  
  991.     ; Tile 0x28
  992.     .byte    0xF7,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  993.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  994.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF
  995.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  996.     .byte    0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  997.  
  998. .endtp3:
  999.  
  1000.     ; Image size: 0x40 x 0x40
  1001.     ; Number of tiles (total - unique): 0x40 - 0x2D
  1002.  
  1003. .bkg_tiles:
  1004.  
  1005.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1006.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1007.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1008.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1009.  
  1010.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1011.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1012.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1013.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1014.  
  1015.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1016.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1017.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1018.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1019.  
  1020.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1021.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1022.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1023.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1024.  
  1025.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1026.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1027.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1028.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1029.  
  1030.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1031.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1032.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1033.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1034.  
  1035.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1036.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1037.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1038.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1039.  
  1040.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1041.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1042.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1043.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1044.  
  1045.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1046.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1047.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1048.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1049.  
  1050.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1051.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1052.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1053.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1054.  
  1055.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1056.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1057.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1058.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1059.  
  1060.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1061.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1062.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1063.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1064.  
  1065.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1066.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1067.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1068.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1069.  
  1070.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1071.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1072.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1073.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1074.  
  1075.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1076.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1077.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1078.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1079.  
  1080.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1081.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1082.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1083.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1084.  
  1085.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1086.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1087.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1088.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1089.  
  1090.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1091.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1092.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1093.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1094.  
  1095.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1096.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1097.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1098.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1099.  
  1100.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1101.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1102.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1103.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1104.  
  1105.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1106.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1107.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1108.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1109.  
  1110.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1111.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1112.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1113.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1114.  
  1115.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1116.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1117.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1118.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1119.  
  1120.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1121.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1122.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1123.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1124.  
  1125.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1126.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1127.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1128.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1129.  
  1130.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1131.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1132.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1133.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1134.  
  1135.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1136.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1137.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1138.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1139.  
  1140.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1141.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1142.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1143.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1144.  
  1145.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1146.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1147.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1148.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1149.  
  1150.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1151.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1152.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1153.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1154.  
  1155.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1156.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1157.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1158.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1159.  
  1160.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1161.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1162.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1163.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1164.  
  1165.     ; Image size: 0x80 x 0x50
  1166.     ; Number of tiles (total - unique): 0xA0 - 0x15
  1167.  
  1168. .earth_tiles:
  1169.  
  1170.     .byte    0x00,0x02
  1171.     .byte    0x04,0x06
  1172.     .byte    0x08,0x0A
  1173.     .byte    0x0C,0x0E
  1174.     .byte    0x10,0x12
  1175.     .byte    0x14,0x16
  1176.     .byte    0x18,0x1A
  1177.  
  1178.     ; Image size: 0x60 x 0x30
  1179.     ; Number of tiles (total - unique): 0x48 - 0x03
  1180.  
  1181. .frame_tiles:
  1182.  
  1183.     .byte    0x80,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x84
  1184.     .byte    0x85,0x86,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x8B,0x8C
  1185.     .byte    0xFD,0x8D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8E,0x8F
  1186.     .byte    0x82,0x8C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x85,0x90
  1187.     .byte    0x8E,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0x8D
  1188.     .byte    0x85,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x82,0x8C
  1189.     .byte    0xFD,0x8D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8E,0x8F
  1190.     .byte    0x82,0x8C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x85,0x90
  1191.     .byte    0x8E,0x91,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0x92,0x8D
  1192.     .byte    0x93,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x94
  1193.  
  1194.     ; Image size: 0x10 x 0x70
  1195.     ; Number of tiles (total - unique): 0x1C - 0x1C
  1196.  
  1197. .door1_tiles:
  1198.  
  1199.     .byte    0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
  1200.     .byte    0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
  1201.     .byte    0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
  1202.     .byte    0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
  1203.     .byte    0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
  1204.     .byte    0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
  1205.  
  1206.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1207.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1208.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1209.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1210.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1211.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1212.  
  1213.     ; Image size: 0x60 x 0x30
  1214.     ; Number of tiles (total - unique): 0x48 - 0x04
  1215.  
  1216. .door2_tiles:
  1217.  
  1218.     .byte    0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98
  1219.     .byte    0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99
  1220.     .byte    0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A
  1221.     .byte    0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98
  1222.     .byte    0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99
  1223.     .byte    0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B
  1224.  
  1225.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1226.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1227.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1228.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1229.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1230.  
  1231.     ; Image size: 0x60 x 0x30
  1232.     ; Number of tiles (total - unique): 0x48 - 0x04
  1233.  
  1234. .door3_tiles:
  1235.  
  1236.     .byte    0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C
  1237.     .byte    0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D
  1238.     .byte    0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E
  1239.     .byte    0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C
  1240.     .byte    0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D
  1241.     .byte    0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F
  1242.  
  1243.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1244.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1245.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1246.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1247.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1248.  
  1249.     ; Image size: 0x60 x 0x30
  1250.     ; Number of tiles (total - unique): 0x48 - 0x04
  1251.  
  1252. .door4_tiles:
  1253.  
  1254.     .byte    0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
  1255.     .byte    0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
  1256.     .byte    0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
  1257.     .byte    0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
  1258.     .byte    0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
  1259.     .byte    0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0
  1260.  
  1261.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1262.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1263.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1264.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1265.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1266.  
  1267. .film:
  1268.     .word    .door1_tiles+0x0C*0
  1269.     .word    .door2_tiles+0x0C*0
  1270.     .word    .door3_tiles+0x0C*0
  1271.     .word    .door4_tiles+0x0C*0
  1272.     .word    .door1_tiles+0x0C*1
  1273.     .word    .door2_tiles+0x0C*1
  1274.     .word    .door3_tiles+0x0C*1
  1275.     .word    .door4_tiles+0x0C*1
  1276.     .word    .door1_tiles+0x0C*2
  1277.     .word    .door2_tiles+0x0C*2
  1278.     .word    .door3_tiles+0x0C*2
  1279.     .word    .door4_tiles+0x0C*2
  1280.     .word    .door1_tiles+0x0C*3
  1281.     .word    .door2_tiles+0x0C*3
  1282.     .word    .door3_tiles+0x0C*3
  1283.     .word    .door4_tiles+0x0C*3
  1284.     .word    .door1_tiles+0x0C*4
  1285.     .word    .door2_tiles+0x0C*4
  1286.     .word    .door3_tiles+0x0C*4
  1287.     .word    .door4_tiles+0x0C*4
  1288.     .word    .door1_tiles+0x0C*5
  1289.     .word    .door2_tiles+0x0C*5
  1290.     .word    .door3_tiles+0x0C*5
  1291.     .word    .door4_tiles+0x0C*5
  1292. .endfilm:
  1293.     .word    .door1_tiles+0x0C*6
  1294.